package org.spring.bean.factory.xml;

import org.spring.bean.exceptions.BeanDefinitionStoreException;
import org.w3c.dom.Document;

/**
 * 用于解析包含Spring bean定义的XML文档的SPI。
 * 由{@link XmlBeanDefinitionReader}用于实际解析DOM文档。
 *
 * <p>实例化每个文档来解析:实现可以在{@code registerBeanDefinitions}方法执行期间将状态保存在实例变量中；例如，为文档中所有bean定义的全局设置。
 *
 * @author 李坤
 * @date 2022/4/23 14:40
 */
public interface BeanDefinitionDocumentReader {

    /**
     * 从给定的DOM文档读取bean定义，并在给定的读取器上下文中将它们注册到注册中心。
     *
     * @param doc           DOM文档
     * @param readerContext 读取器的当前上下文(包括目标注册表和正在解析的资源)
     *
     * @throws BeanDefinitionStoreException 解析错误
     */
    void registerBeanDefinitions(Document doc, XmlReaderContext readerContext) throws BeanDefinitionStoreException;

}
